<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>SYS_FS_DrivePartition Function</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="generator" content="Doc-O-Matic" />
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <link rel="STYLESHEET" href="default.css" type="text/css" />

<script type="text/javascript" src="scripts.js"></script>
</head>
<body class="Element700" onload="onBodyLoadEx('frames.html', 'topic', '00909.html');" onmousedown="onBodyMouseDown();">

<!-- Begin Popups -->

<!-- End Popups -->

<!-- Begin Page Header -->
<div class="Element710" id="areafixed">
<div class="Element94">
<a href="01259.html" target="topic">System Service Libraries Help</a> &gt; <a href="00735.html" target="topic">File System Service Library Help</a> &gt; <a href="00736.html" target="topic">Library Interface</a> &gt; b) General Operation Functions &gt; <a href="00909.html" target="topic">SYS_FS_DrivePartition Function</a></div>
<div class="Element92">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element1">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element2">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element90">
<a href="00906.html" target="topic">Previous</a> | <a href="00736.html" target="topic">Up</a> | <a href="00910.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element96">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: SYS_FS_DrivePartition@char *@uint32_t@void * Topic Title: SYS_FS_DrivePartition Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table><div class="Element5">
SYS_FS_DrivePartition Function</div>
</div>
</div>

<!-- End Page Header -->

<!-- Begin Client Area -->
<div class="Element720" id="areascroll">
<div class="Element721">

<!-- Begin Page Content -->
<a name="PageContent"></a><div class="Element58">
<a name="4465736372697074696F6E"></a><div class="Element11">
<div class="Element10">
<p class="Element10">
This function partitions a physical drive (media) into requested partition sizes. This function will alter the MBR of the physical drive and make it into multi partitions. Windows operating systems do not support multi partitioned removable media. Maximum 4 partitions can be created on a media.</p></div>
</div>
<a name="43"></a><div class="Element99">
C</div>
<div class="Element101"><div class="Element100"><pre class="Element100"><a href="01121.html" target="topic">SYS_FS_RESULT</a> <strong><span style="color: #000000">SYS_FS_DrivePartition</span></strong>(
    <strong><span style="color: #000080">const</span></strong> <strong><span style="color: #000080">char</span></strong> * <strong><span style="color: #000000">path</span></strong>, 
    <strong><span style="color: #000080">const</span></strong> uint32_t <strong><span style="color: #000000">partition</span></strong>[], 
    <strong><span style="color: #000080">void</span></strong> * <strong><span style="color: #000000">work</span></strong>
);</pre></div></div>
<a name="507265636F6E646974696F6E73"></a><div class="Element14">
Preconditions</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
Prior to partitioning the media, the media should have a valid MBR and it should be mounted as a volume with the file system.</p></div>
</div>
<a name="506172616D6574657273"></a><div class="Element14">
Parameters</div>
<div class="Element11">
<div class="Element10">
<div class="Element312">
<div class="TableDiv">
<table cellspacing="0" class="Table3">
<tr>
<td class="Element300" valign="top" width="35%">
<div class="Element301">
Parameters&nbsp;</div></td><td class="Element304" valign="top" width="65%">
<div class="Element305">
Description&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
path&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Path to the volume with the volume name. The string of volume name has to be preceded by &quot;/mnt/&quot;. Also, the volume name and directory name has to be separated by a slash &quot;/&quot;.&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
partition&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Array with 4 items, where each items mentions the sizes of each partition in terms of number of sector. 0th element of array specifies the number of sectors for first partition and 3rd element of array specifies the number of sectors for fourth partition.&nbsp;</div></td></tr><tr>
<td class="Element302" valign="top" width="35%">
<div class="Element303">
work&nbsp;</div></td><td class="Element306" valign="top" width="65%">
<div class="Element307">
Pointer to the buffer for function work area. The size must be at least FAT_FS_MAX_SS bytes.&nbsp;</div></td></tr></table></div></div>
</div>
</div>
<a name="52657475726E73"></a><div class="Element14">
Returns</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
SYS_FS_RES_SUCCESS - Partition was successful. SYS_FS_RES_FAILURE - Partition was unsuccessful. The reason for the failure can be retrieved with <a href="00911.html" target="topic">SYS_FS_Error</a>.</p></div>
</div>
<a name="52656D61726B73"></a><div class="Element14">
Remarks</div>
<div class="Element11">
<div class="Element10">
<p class="Element10">
None</p></div>
</div>
<a name="4578616D706C65"></a><div class="Element14">
Example</div>
<div class="Element11">
<div class="Element10">
<div class="Element13"><div class="Element12"><pre class="Element12">  <i><span style="color: #008000">//============================================================================</span></i>
  <i><span style="color: #008000">// Initially, consider the case of a SD card that has only one partition.</span></i>
  <i><span style="color: #008000">//============================================================================</span></i>
  <a href="01121.html" target="topic">SYS_FS_RESULT</a> res;

  <i><span style="color: #008000">// Following 4 element array specifies the size of 2 partitions as</span></i>
  <i><span style="color: #008000">// 256MB (=524288 sectors). The 3rd and 4th partition are not created</span></i>
  <i><span style="color: #008000">// since, the sizes of those are zero.</span></i>
  uint32_t plist[] = {524288, 524288, 0, 0};

  <i><span style="color: #008000">// Work area for function SYS_FS_DrivePartition</span></i>
  <strong><span style="color: #000080">char</span></strong> work[FAT_FS_MAX_SS];

  <strong><span style="color: #000080">switch</span></strong>(appState)
  {
      <strong><span style="color: #000080">case</span></strong> TRY_MOUNT:
          <strong><span style="color: #000080">if</span></strong>(<a href="01117.html" target="topic">SYS_FS_Mount</a>(&quot;/dev/mmcblka1&quot;, &quot;/mnt/myDrive&quot;, FAT, 0, NULL) != SYS_FS_RES_SUCCESS)
          {
              <i><span style="color: #008000">// Failure, try mounting again</span></i>
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Mount was successful. Partition now.</span></i>
              appState = PARTITION_DRIVE;
          }
          <strong><span style="color: #000080">break</span></strong>;
      
      <strong><span style="color: #000080">case</span></strong> PARTITION_DRIVE:
          res = SYS_FS_DrivePartition(&quot;/mnt/myDrive&quot;, plist, work);
          <strong><span style="color: #000080">if</span></strong>(res == SYS_FS_RES_FAILURE)
          {
              <i><span style="color: #008000">// Drive partition went wrong</span></i>
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Partition was successful. Power cycle the board so that</span></i>
              <i><span style="color: #008000">// all partitions are recognized. Then try mounting both</span></i>
              <i><span style="color: #008000">// partitions.</span></i>
          }
          <strong><span style="color: #000080">break</span></strong>;

      <strong><span style="color: #000080">default</span></strong>:
          <strong><span style="color: #000080">break</span></strong>;
  }

  <i><span style="color: #008000">//============================================================================</span></i>
  <i><span style="color: #008000">//The following code is after the SD card is partitioned and then</span></i>
  <i><span style="color: #008000">//powered ON.</span></i>
  <i><span style="color: #008000">//============================================================================</span></i>
  <a href="01121.html" target="topic">SYS_FS_RESULT</a> res;

  <strong><span style="color: #000080">switch</span></strong>(appState)
  {
      <strong><span style="color: #000080">case</span></strong> TRY_MOUNT_1ST_PARTITION:
          <strong><span style="color: #000080">if</span></strong>(<a href="01117.html" target="topic">SYS_FS_Mount</a>(&quot;/dev/mmcblka1&quot;, &quot;/mnt/myDrive1&quot;, FAT, 0, NULL) != SYS_FS_RES_SUCCESS)
          {
              <i><span style="color: #008000">// Failure, try mounting again</span></i>
              appState = TRY_MOUNT_1ST_PARTITION;
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Mount was successful. Mount second partition.</span></i>
              appState = TRY_MOUNT_2ND_PARTITION;
          }
          <strong><span style="color: #000080">break</span></strong>;

      <strong><span style="color: #000080">case</span></strong> TRY_MOUNT_2ND_PARTITION:
          <strong><span style="color: #000080">if</span></strong>(<a href="01117.html" target="topic">SYS_FS_Mount</a>(&quot;/dev/mmcblka2&quot;, &quot;/mnt/myDrive2&quot;, FAT, 0, NULL) != SYS_FS_RES_SUCCESS)
          {
              <i><span style="color: #008000">// Failure, try mounting again</span></i>
              appState = TRY_MOUNT_2ND_PARTITION;
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Mount was successful. Try formating first partition.</span></i>
              appState = TRY_FORMATING_1ST_PARTITION;
          }
          <strong><span style="color: #000080">break</span></strong>;

      <strong><span style="color: #000080">case</span></strong> TRY_FORMATING_1ST_PARTITION:
          <strong><span style="color: #000080">if</span></strong>(<a href="00906.html" target="topic">SYS_FS_DriveFormat</a>(&quot;/mnt/myDrive1/&quot;, SYS_FS_FORMAT_FDISK, 0) == SYS_FS_RES_FAILURE)
          {
              <i><span style="color: #008000">// Failure</span></i>
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Try formating second partitions.</span></i>
              appState = TRY_FORMATING_2ND_PARTITION;
          }

      <strong><span style="color: #000080">case</span></strong> TRY_FORMATING_2ND_PARTITION:
          <strong><span style="color: #000080">if</span></strong>(<a href="00906.html" target="topic">SYS_FS_DriveFormat</a>(&quot;/mnt/myDrive2/&quot;, SYS_FS_FORMAT_FDISK, 0) == SYS_FS_RES_FAILURE)
          {
              <i><span style="color: #008000">// Failure</span></i>
          }
          <strong><span style="color: #000080">else</span></strong>
          {
              <i><span style="color: #008000">// Use both partitions as 2 separate volumes.</span></i>
          }

      <strong><span style="color: #000080">default</span></strong>:
          <strong><span style="color: #000080">break</span></strong>;
  }</pre></div></div>
</div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->
<div class="Element95">
<a href="01259.html" target="topic">System Service Libraries Help</a> &gt; <a href="00735.html" target="topic">File System Service Library Help</a> &gt; <a href="00736.html" target="topic">Library Interface</a> &gt; b) General Operation Functions &gt; <a href="00909.html" target="topic">SYS_FS_DrivePartition Function</a></div>
<div class="Element93">
<table width="100%" cellspacing="0" cellpadding="0">
<tr><td width="25%">
<div class="Element3">
MPLAB Harmony Core Help</div>
</td><td width="25%">
<div class="Element4">
<a href="contents.html" target="tocidx">Contents</a> | <a href="00007.html" target="topic">Home</a></div>
</td><td width="25%">
<div class="Element91">
<a href="00906.html" target="topic">Previous</a> | <a href="00736.html" target="topic">Up</a> | <a href="00910.html" target="topic">Next</a></div>
</td><td width="25%">
<div class="Element97">
<a href="mailto:docerrors@microchip.com&subject=MPLAB Harmony Documentation Feedback (Topic ID: SYS_FS_DrivePartition@char *@uint32_t@void * Topic Title: SYS_FS_DrivePartition Function)&body=Thank you for your feedback! Please include a description of your feedback, and indicate whether you are reporting an an error in the documentation or an enhancement.">Documentation Feedback</a><br> <a href="http://support.microchip.com" target="_blank">Microchip Support</a></div>
</td></tr></table></div>

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->
</body></html>